Disc drives are used as primary data storage devices in modern computer systems. A typical disc drive includes one or more axially aligned discs that are rotated at a high speed by a spindle motor. Each disc surface has a plurality of concentric tracks defined by servo data written to the discs during manufacturing. Each track includes a plurality of user data fields, or sectors, to which user data are written and from which user data are subsequently read by the heads. All of the tracks on each of the disc surfaces at a given radius collectively make up a cylinder.
A corresponding array of read/write transducing heads are supported adjacent the discs and used to transfer data between the discs and a host computer in which the disc drive is mounted. It is desirable to vertically align the heads such that each head is adjacent the same cylinder at all times; nevertheless, some positional offset will typically exists between each of the heads. The heads are supported by a rotary actuator assembly which controllably moves the heads across the disc surfaces in response to a servo control system. Individual sectors are accessed for read and write operations in response to commands from the host computer.
A disc drive is further provided with host interface electronics that conform to a selected industry standard protocol to facilitate communication and data transfer between the disc drive and the host computer. Such protocols can allow the host computer to send multiple access commands to the drive at a time, and the commands are stored in a memory location (also referred to as a “command queue”) pending execution by the drive. For example, disc drives using the Small Computer System Interface (SCSI) protocol can typically store up to 64 pending commands in the command queue.
When multiple commands are available for execution, the disc drive is typically configured to employ a sorting strategy to execute the commands in an order that minimizes the time necessary to access the associated sectors. A particularly useful command queue sorting strategy is disclosed by U.S. Pat. No. 5,570,332 issued to Heath et al., assigned to the assignee of the present application.
In order for the host interface electronics to determine an optimal order of execution of the pending commands, a valid estimate of time to access each of the associated sectors is needed. As will be recognized, the total access time for a drive to access a desired sector on a selected disc surface includes a (relatively short) overhead time to process the access command, a seek time during which a seek operation is performed to move the actuator from an initial cylinder to a destination cylinder so that the appropriate head is settled onto the destination track containing the desired sector, and a rotational latency time during which the drive waits for the disc to rotate the desired sector around to a position under the selected head.
To enable accurate sorting of pending access commands, disc drives typically maintain a seek profile table of values indicative of average seek time for each seek length. It is common to maintain this table as a running average so that the table is updated as each successive seek is executed. A default seek profile table, which may be generated and permanently saved to the drive in a manufacturing process, may be loaded during power-on initialization and before normal operation is entered.
For reference, a typical overhead time is usually on the order of a few microseconds, μsec (10−6 seconds). A typical seek time will vary widely depending upon the length of the seek (i.e., whether the head is only moved a few tracks or across substantially the entire radius of the disc), but will typically range from 1-2 milliseconds, msec (10−3 seconds) for a short seek and up to about 10−12 msec for a long seek. Latency is a function of both rotational speed of the discs as well as the angular position of the desired sector with respect to the head. For a spindle motor rotational speed of about 10,000 revolutions per minute (rpm), one disc revolution will take about 6 msec; hence, latency can vary from almost no time at all to a full 6 msec. Of course, using different rotational speeds results in different full latency times. It will be noted that, except for the case of relatively long seeks, latency is generally the largest contributing factor to total access time.
The evaluation of a particular access command for execution at any given time must take into account not only how far away the destination track is located, but also the angular position of the destination sector with respect to the head. If the disc drive cannot reach the destination track before the destination sector “passes” the head, then an entire revolution of the disc (a full rotational latency period) will have to occur before the head can access the desired sector. This is sometimes referred to as a “burned” revolution, and is highly undesirable since burned revolutions reduce the overall data transfer rate sustained by the disc drive.
A disc drive is typically in a track-following mode of operation when evaluating the access commands in the command queue, so that a selected one of the heads is actively maintained over a corresponding track on the associated disc surface (usually the last accessed track by the disc drive). The pending access commands in the command queue, however, may be associated with destination sectors on disc surfaces other than the one over which the presently active head is located. Thus, when evaluating each of the pending access commands in the command queue, the disc drive typically determines the distance to the target track by determining the number of tracks between the track being followed by the presently active head and the destination cylinder containing the target track, which assumes that all of the heads are nominally aligned.
As track densities continue to increase, the amount of inter-head radial spacing becomes increasingly significant and detracts from the ability of the drive to accurately determine the actual distance to the target track. For example, if the destination cylinder is 30 tracks away from the presently selected head, and the target head is offset from the presently selected head a distance of two tracks in the opposite direction, then the actual seek distance required to place the target head over the target track is 32 tracks, not 30. However, the controller will schedule the access command based on a 30 track seek, leaving open the possibility that the target head will not reach the target track within the expected time (and require a burned revolution).
Accordingly, there is a continued need to develop an efficient method whereby head offsets are taken into consideration when performing combined seek/head switch operations to provide better estimates of actual seek time when sorting pending access commands.